package vap

import (
	"lib/structs/tables"
	"lib/utils"
)

// AddHostDto 添加主机
type AddHostDto struct {
	Ip        string `json:"ip"`
	ConnProto string `json:"connProto"` // 可选：rdp、ssh
	ConnPort  int    `json:"connPort"`  // 连接端口: 默认rdp-3389,sh-22
	OsType    int    `json:"osType"`    // 系统类型：1-windows；2-linux
}

type AddClusterDto struct {
	Name            string  `json:"name"`
	CpuThreshold    float64 `json:"cpuThreshold"`
	MemoryThreshold float64 `json:"memoryThreshold"`
	TimeOutAction   int     `json:"timeOutAction"`
	MaxSessionTime  int     `json:"maxSessionTime"`
	MaxTimeOutTime  int     `json:"maxTimeOutTime"`
	ClusterType     int     `json:"clusterType"`
}

type ClusterBindHostsDto struct {
	ClusterId int64                  `json:"clusterId,string"`
	HostIds   utils.StringArrayInt64 `json:"hostIds"`
}

type IssueAppDto struct {
	AppName   string `json:"appName"`
	Alias     string `json:"alias"`
	Icon      string `json:"icon"`
	LinkPath  string `json:"linkPath"`
	ExecPath  string `json:"execPath"`
	AppParams string `json:"appParams"`
	WorkSpace string `json:"workSpace"`
	IsAdmin   bool   `json:"isAdmin"`
	IsSingle  bool   `json:"isSingle"` // 是否为单例应用，true-单例；false - 共享
	IsPublic  bool   `json:"isPublic"` // 是否对全局公开
	ClusterId int64  `json:"clusterId,string"`
}

// AppDetail 应用详细信息
type AppDetail struct {
	AppIssue tables.VapAppIssue `json:"appIssue"`
	Cluster  tables.VapCluster  `json:"cluster"`
}

// UpdateHostAppDto 通知主机更新应用列表
type UpdateHostAppDto struct {
	HostId   int64  `json:"hostId,string"`
	IconPath string `json:"iconPath"`
}

// TrimHostDto 微调主机参数的结构体
type TrimHostDto struct {
	HostId      int64  `json:"hostId,string"`
	GuaIp       string `json:"guaIp"`
	GuaPort     int    `json:"guaPort"`
	GuaProtocol string `json:"guaProtocol"`
}
